Health Supply Chain
A health supply chain moves commodities — medicines, vaccines, contraceptives, diagnostics, consumables — from a national warehouse to the point of use. The information system that supports it (an LMIS, or eLMIS) is one of the oldest categories of health software, and one of the least well integrated with clinical systems.
That gap is the main architectural opportunity: clinical systems know what was dispensed, and logistics systems mostly know what was issued. Those are different numbers, and the difference is why forecasting is poor.
The core data
| Entity | Notes |
|---|---|
| Product | The commodity, at a defined level of specificity — see below |
| Facility / storage location | From the facility registry, including warehouses and sub-stores |
| Stock on hand | Quantity at a location at a point in time |
| Batch / lot | With expiry date; essential for recalls and expiry management |
| Transaction | Receipt, issue, dispense, adjustment, loss, transfer, return |
| Requisition | A request from a facility upward |
| Consumption | What was actually used — distinct from what was issued |
| Cold chain | Equipment, temperature excursions, functional status |
The transaction log is the model. Stock on hand is a derived value — computed from the transaction history, not stored as a mutable number. Systems that store stock as an editable field lose the ability to explain discrepancies, which is the main analytical use of the data.
The product catalogue
The shared list of commodities, and the master data that determines whether any of this interoperates.
The specificity problem. "Amoxicillin" is a substance. "Amoxicillin 250 mg dispersible tablet" is a product. "Amoxicillin 250 mg dispersible tablet, 100 tablet blister, manufacturer X" is a trade item. Different systems need different levels:
Substance ← clinical decision support, allergy checking
│
Clinical product ← prescribing, dispensing, EMR medication list
│
Packaged product ← procurement, stock counting
│
Trade item (GTIN) ← scanning, traceability, recall
A catalogue that models only one level forces every other use to approximate. The minimum workable design holds the clinical product and the packaged product, with an explicit relationship between them and defined pack sizes.
Standards:
- GS1 — GTIN for trade items, GLN for locations, and barcode standards. Increasingly required for traceability and recall.
- ATC — WHO's Anatomical Therapeutic Chemical classification, useful for grouping and consumption analysis.
- National drug codes / essential medicines list — usually the operative catalogue.
- RxNorm — normalised clinical drug names; US-centric but a useful model.
- FHIR —
Medication,MedicationKnowledge, and the supply resourcesSupplyRequest,SupplyDelivery,InventoryReport.
The catalogue must be a governed, versioned shared service, not a spreadsheet per system. See terminology services.
Issued versus consumed
The distinction that makes the clinical–logistics integration worth building.
- Issued — what the warehouse sent to the facility. Known to the LMIS.
- Consumed — what was actually dispensed to patients. Known to the pharmacy or EMR.
Forecasting from issues perpetuates existing allocation patterns, including their errors: a facility that was over-supplied continues to be over-supplied, because its issues look like demand. Forecasting from consumption reflects actual need.
EMR / pharmacy ──dispensing events──▶ ┌──────────────┐
│ IOL │
LMIS ──stock, issues, receipts──────▶ │ │
└──────┬───────┘
▼
Consumption-based forecasting
Stock-out analysis against
clinical demand
The requirement this places on the architecture: medication coding must be consistent between the EMR and the LMIS, at a level that maps to the catalogue. This is the practical argument for a national drug terminology, and it is usually the blocking issue.
Requisition and distribution models
| Model | How | Suits |
|---|---|---|
| Pull (requisition) | The facility requests what it needs | Facilities with capacity to forecast; variable demand |
| Push (allocation) | The higher level decides and sends | Campaigns, emergencies, weak facility capacity |
| Informed push / vendor-managed | The supplier reviews stock and resupplies to a target | Reduces facility burden; needs reliable stock visibility |
| Max/min | Resupply to a maximum when below a minimum | The common default; requires reliable consumption data |
The information requirements differ substantially. Informed push depends on accurate, timely stock data from every facility — which is a demanding requirement, and the reason it is often adopted in principle and abandoned in practice.
Cold chain
Vaccines and some biologicals require continuous temperature control, and the data has a different character from stock data.
- Equipment registry — refrigerators and freezers as devices, with location, model, functional status and capacity. Overlaps with the facility registry.
- Temperature monitoring — continuous or interval readings from remote temperature monitoring devices; high volume, time-series.
- Excursions — an alert with a defined response workflow, because the question "is this stock still usable?" needs an answer within hours.
- Vaccine vial monitors and shake tests — the low-technology controls that remain the operative ones in many settings.
Temperature data is time-series and does not belong in the transactional LMIS database. A separate time-series store with alerting is the appropriate shape.
Interoperability requirements
An LMIS depends on:
- Facility registry — delivery points must be the same facilities the clinical systems use, including sub-stores which the clinical systems may not distinguish
- Product catalogue — shared, versioned, at the right levels of specificity
- Clinical systems — for dispensing and consumption
- HMIS — stock-out indicators are standard health system performance measures
- Financial systems — procurement, budget, payment
- Programme systems — immunisation campaigns have their own commodity flows
The two that are consistently underestimated are the facility registry alignment (sub-store granularity) and the product catalogue mapping.
Analytics that matter
- Stock-out rate by product and facility — the headline indicator, and the one most susceptible to definitional dispute (stocked out on the day of reporting, or at any point in the period?)
- Days of stock remaining, against consumption
- Wastage — expiry, breakage, cold chain loss
- Order fill rate — how much of what was requested was supplied
- Reporting rate and timeliness — whether the data exists at all
- Expiry risk — batches approaching expiry with insufficient consumption
Publish the definitions with the numbers. Stock-out rate computed two different ways produces two different national figures, and both get quoted.
Platforms
| Platform | Notes | Licence |
|---|---|---|
| OpenLMIS | Open-source LMIS designed for low-resource public health supply chains | AGPL |
| DHIS2 | Widely used for aggregate stock reporting; not a full LMIS but often the pragmatic starting point | BSD |
| eLMIS implementations | Several national systems, some derived from OpenLMIS | Varies |
| mSupply | Used in several countries including for remote and mobile stores | Commercial, with open components |
| Commercial ERP | Where national procurement is already ERP-based | Commercial |
Verify current status before selection; see platform directory.
Checklist
- Product catalogue shared, versioned, governed, at defined specificity levels
- Facility and storage locations from the facility registry, including sub-stores
- Stock derived from an immutable transaction log
- Batch and expiry tracked, with recall capability
- Dispensing data flowing from clinical systems for consumption-based forecasting
- Medication coding consistent between EMR and LMIS
- Cold chain equipment registered; temperature data in a time-series store with alerting
- Excursion response workflow defined and owned
- Stock-out indicator definition agreed and published
- Offline capability for facilities without connectivity — see offline-first
References
- OpenLMIS — https://openlmis.org/
- GS1 healthcare standards — https://www.gs1.org/industries/healthcare
- WHO ATC/DDD — https://atcddd.fhi.no/
- WHO immunization supply chain resources — https://www.who.int/teams/immunization-vaccines-and-biologicals/essential-programme-on-immunization/supply-chain
- FHIR
Medication— https://hl7.org/fhir/medication.html